package demo4;

import java.util.LinkedList;
import java.util.Queue;

class MyStack {

    private Queue<Integer> qu1;
    private Queue<Integer> qu2;

    public MyStack() {
        qu1 = new LinkedList<>();
        qu2 = new LinkedList<>();
    }
    
    public void push(int x) {
        if(!qu1.isEmpty()) {
            qu1.offer(x);
        }else if(!qu1.isEmpty()) {
            qu2.offer(x);
        }else{
            qu1.offer(x);
        }
    }
    
    public int pop() {
//        if (empty()) {
//            return -1;
//        }
//
//        if (!qu1.isEmpty()) {
//            int size = qu1.size();
//            for(int i = 0; i < size-1; i++) {
//                int tmp = qu1.poll();
//                qu2.offer(tmp);
//            }
//            return qu1.poll();
//        }else{
//            int size = qu2.size();
//            for(int i = 0; i < size-1; i++) {
//                int tmp = qu2.poll();
//                qu1.offer(tmp);
//            }
//            return qu2.poll();
//        }


        if(empty()) {
            return -1;
        }

        Queue<Integer> fu = qu1;
        Queue<Integer> em = qu2;
        if(!qu1.isEmpty()) {
            fu = qu1;
            em = qu2;
        }else {
            fu = qu2;
            em = qu1;
        }

        int size = fu.size();
        for(int i = 0; i < size-1; i++) {
            // int val = fu.poll();
            // em.offer(val);
            em.offer(fu.poll());
        }
        return fu.poll();
    }
    
    public int top() {
         if(empty()) {
             return -1;
         }

         Queue<Integer> fu = qu1;
         Queue<Integer> em = qu2;
         if(!qu1.isEmpty()) {
             fu = qu1;
             em = qu2;
         }else if(!qu2.isEmpty()) {
             fu = qu2;
             em = qu1;
         }else{
             return -1;
         }

         int val = 0;
         // while(fu.isEmpty()) {
         //     val = fu.pop();
         //     em.offer(val);
         // }
        int size = fu.size();
         for(int i = 0; i < size; i++) {
             val = fu.poll();
             em.offer(val);
         }
         return val;

//        if (empty()) {
//            return -1;
//        }
//
//        if (!qu1.isEmpty()) {
//            int size = qu1.size();
//            int tmp = -1;
//            for(int i = 0; i < size; i++) {
//                tmp = qu1.poll();
//                qu2.offer(tmp);
//            }
//            return tmp;
//        }else{
//            int size = qu2.size();
//            int tmp = -1;
//            for(int i = 0; i < size; i++) {
//                tmp = qu2.poll();
//                qu1.offer(tmp);
//            }
//            return tmp;
//        }
    }
    
    public boolean empty() {
        if(qu1.isEmpty() && qu2.isEmpty()) {
            return true;
        }
        return false;
    }
}
